package learn.bridge;

/**
 * @author 执笔
 * @date 2019/11/26 16:45
 */
public class Bridge {

    // 实现类接口
    interface Log{
        /**
         * 保存日志
         * @param obj
         */
        void saveLog(Object obj);
    }

    // 具体实现类
    class FileLog implements Log{
        public void saveLog(Object obj) {
            // 保存
        }
    }

    // 具体实现类
    class DbLog implements Log{
        public void saveLog(Object obj) {
            // 保存
        }
    }

    // 抽象类
    abstract class SaveLog {
        protected Log log;

        public void setLog(Log log) {
            this.log = log;
        }

        public abstract void save(Object obj);
    }

    // 扩充抽象类
    class WinSaveLog extends SaveLog{

        @Override
        public void save(Object obj) {
            // 业务逻辑
            log.saveLog(obj);
        }
    }

    // 扩充抽象类
    class LinuxSaveLog extends SaveLog{

        @Override
        public void save(Object obj) {
            // 业务逻辑
            log.saveLog(obj);
        }
    }


}
